﻿using System;
using System.Windows;
using Dsl.Ped.Framework.Common;

namespace Dsl.Ped.Framework.Projections.TextProjections
{
    /// <summary>
    /// Interface that must be implemented by any text-based projeciton hints.
    /// These projections are able to dispalay something as a flat text
    /// </summary>
    /// <typeparam name="T">Type of the projection (like TextBox, Label, etc.)</typeparam>
    public interface ITextProjectionHint<T> : IProjectionHint<T>
        where T : FrameworkElement, new()
    {
        /// <summary>
        /// Gets the type of the projeciton
        /// </summary>
        Type ProjectionType { get; }

        /// <summary>
        /// Get the converter of an object to text
        /// </summary>
        Func<Object, string> ToStringConverter { get; }

        /// <summary>
        /// Property where the text is bound
        /// </summary>
        DependencyProperty TextProperty { get; }
    }
}
